const { autoUpdater } = require("electron/main");

const handleAppUpdate = (serviceUrl) => {
    if (!serviceUrl) {
        return;
    }

    // 设置检查更新的url
    autoUpdater.setFeedURL(serviceUrl)

    // 询问服务器是否有更新(前提: 必须先调用setFeedURL)
    autoUpdater.checkForUpdates()

    autoUpdater.on('error', (event) => {
        console.log('当更新发生错误的时候触发 => ', event)
    })

    autoUpdater.on('checking-for-update', (event) => {
        console.log('当开始检查更新的时候触发 => ', event)
    })

    autoUpdater.on('update-available', (event) => {
        console.log('当有可用更新的时候触发。 更新将自动下载 => ', event)
    })

    autoUpdater.on('update-not-available', (event) => {
        console.log('当没有可用更新的时候触发 => ', event)
    })

    autoUpdater.on('update-downloaded', (event) => {
        console.log('在更新下载完成的时候触发 => ', event)

        // 重启应用并在下载后安装更新(底层原理1: 首先关闭所有应用程序窗口，并且在所有窗口都关闭之后自动调用 app.quit() )
        autoUpdater.quitAndInstall()
    })

    autoUpdater.on('before-quit-for-update', (event) => {
        console.log('调用quitAndInstall()之后发出, 关闭窗口进程退出之前执行操作 => ', event)
    })
}


module.exports = {
    handleAppUpdate
}